package com.nayun.gjh.xiaokabanghou.common;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;

public class CustomMailSender {
    private static final Logger logger = LogManager.getLogger(CustomMailSender.class);

    public static String sendPostRequest(String url, Map<String, String> params) throws IOException {
        URL apiUrl = new URL(url);
        HttpURLConnection connection = (HttpURLConnection) apiUrl.openConnection();

        // 设置请求方法为POST
        connection.setRequestMethod("POST");

        // 设置请求头
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        connection.setRequestProperty("Accept", "application/json, text/plain, */*");

        // 启用输出流，用于发送请求体
        connection.setDoOutput(true);

        // 将参数转换为请求体格式
        String requestBody = params.entrySet().stream()
                .map(entry -> entry.getKey() + "=" + entry.getValue())
                .collect(Collectors.joining("&"));

        // 获取输出流，并写入请求体
        try (OutputStream outputStream = connection.getOutputStream()) {
            byte[] input = requestBody.getBytes(StandardCharsets.UTF_8);
            outputStream.write(input, 0, input.length);
        }

        // 获取响应码
        int responseCode = connection.getResponseCode();

        // 读取响应内容
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
            StringBuilder response = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }
            return response.toString();
        } finally {
            // 关闭连接
            connection.disconnect();
        }
    }
//    public static void main(String[] args) {
//        try {
//            // 创建参数Map并设置参数
//            Map<String, String> params = new HashMap<>();
//            params.put("ColaKey", "QHltquDtxazVmd17071895250528HZ5EaENwZ");
//            params.put("tomail", "vm2116112109@jzxy.edu.cn");
//            params.put("fromTitle", "消息&短信 MSGSMS   \n" +
//                    "消息&短信 （Message&SMS）是华为云携手全球多家优质运营商和渠道，为企业用户提供的通信服务。企业调用API或使用群发助手，即可使用验证码、通知短信服务.");
//            params.put("subject", "校卡帮平台安全验证码");
//            params.put("content", "updatedContent");
//            params.put("isTextContent", "false");
//            params.put("smtpCode", "pxftngpvoflsbfdi");
//            params.put("smtpEmail", "tsin09@qq.com");
//            params.put("smtpCodeType", "qq");
//
//            // 指定目标URL
//            String apiUrl = "https://luckycola.com.cn/tools/customMail";
//
//            // 发送POST请求并获取响应
//            String response = sendPostRequest(apiUrl, params);
//
//            // 输出响应结果
//            System.out.println("Response: " + response);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }

    public static int SafetyCheckMailSend(String tomail) {

        int code= generateRandomNumber();
        //验证码内容
        String content = "您的验证码是[" + code + "],有效期是10分钟,请及时验证。如非本人，请忽略此邮件";

        try {
            // 创建参数Map并设置参数
            Map<String, String> params = new HashMap<>();
            params.put("ColaKey", "QHltquDtxazVmd17071895250528HZ5EaENwZ");
            params.put("tomail", tomail);
            params.put("fromTitle", "校卡帮");
            params.put("subject", "校卡帮晋院版的验证码");
            params.put("content", content);
            params.put("isTextContent", "false");
            params.put("smtpCode", "ZIZPNLBEHZIIODHT");
            params.put("smtpEmail", "xiaokabang@126.com");
            params.put("smtpCodeType", "126");

            // 指定目标URL
            String apiUrl = "https://luckycola.com.cn/tools/customMail";

            // 发送POST请求并获取响应
            String response = sendPostRequest(apiUrl, params);

            // 输出响应结果
            System.out.println("Response: " + response);
            // 使用 Log4j 记录随机数
            logger.info("发送的邮箱是: {}", tomail);
            logger.info("校卡帮晋院版的验证码: {}", code);
            logger.info(response);


        } catch (IOException e) {
            e.printStackTrace();
        }
        return code;
    }

    /**
     * 发送找到卡邮件
     */
    public static boolean MailSendToLoser(String tomail,Date time,String sixCode) {
        //验证码内容
        String content = "有同学在"+time+"捡到您的尾号为["+sixCode+"]的卡,请搜索“校卡帮”关注公众号后查看拾卡同学的联系方式。如果不是您的卡，这封邮件请忽略。\n如果你与捡到卡的同学取得联系，请在[我]点击关闭丢失模式。\n校卡帮注重双方个人信息的加密与隐私保护\n本邮件由系统自动发出，不要回复";

        try {
            // 创建参数Map并设置参数
            Map<String, String> params = new HashMap<>();
            params.put("ColaKey", "QHltquDtxazVmd17071895250528HZ5EaENwZ");
            params.put("tomail", tomail);
            params.put("fromTitle", "校卡帮校园卡检索提示");
            params.put("subject", "你的校园卡成功找到！");
            params.put("content", content);
            params.put("isTextContent", "false");
            params.put("smtpCode", "ZIZPNLBEHZIIODHT");
            params.put("smtpEmail", "xiaokabang@126.com");
            params.put("smtpCodeType", "126");

            // 指定目标URL
            String apiUrl = "https://luckycola.com.cn/tools/customMail";

            // 发送POST请求并获取响应
            String response = sendPostRequest(apiUrl, params);

            // 输出响应结果
            System.out.println("Response: " + response);
            // 使用 Log4j 记录随机数
            logger.info("发送的邮箱是: {}", tomail);
            logger.info("成功匹配到该同学的校园卡");
            logger.info(response);


        } catch (IOException e) {
            e.printStackTrace();
        }
        return true;
    }
    /**
     * 随机生成6薇数字
     * @return
     */
    public static int generateRandomNumber() {
        Random random = new Random();
        // 生成范围在 100000 到 999999 之间的随机数
        return random.nextInt(900000) + 100000;
    }
}
